/* Copyright (c) 2004-2024 peigen.info. All rights reserved. */

package info.peigen.hotpot.business.product.manage.convertor;

import info.peigen.hotpot.business.product.core.domain.ProductBrand;
import info.peigen.hotpot.business.product.core.repository.entity.ProductBrandEntity;
import info.peigen.hotpot.business.product.manage.form.ProductBrandManageCreateForm;
import info.peigen.hotpot.business.product.manage.form.ProductBrandManageEditForm;
import info.peigen.hotpot.business.product.manage.form.ProductBrandManageSearchForm;
import info.peigen.hotpot.business.product.manage.info.ProductBrandManageInfo;
import org.mapstruct.Builder;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * <b>(ProductBrandManageMapConvertor)</b>
 * 管理后台领域对象 "商品品牌" 转换器
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2024-05-02
 */
@SuppressWarnings("unused")
@Mapper(builder = @Builder(disableBuilder = true))
public interface ProductBrandManageMapConvertor {
    ProductBrandManageMapConvertor INSTANCE = Mappers.getMapper(ProductBrandManageMapConvertor.class);

    // ConvertToEntity
    ProductBrandEntity convertToEntity(ProductBrand domain);

    ProductBrandEntity convertToEntity(ProductBrandManageInfo info);

    ProductBrandEntity convertToEntity(ProductBrandManageSearchForm form);

    ProductBrandEntity convertToEntity(ProductBrandManageCreateForm form);

    ProductBrandEntity convertToEntity(ProductBrandManageEditForm form);

    // ConvertToDomain
    ProductBrand convertToDomain(ProductBrandEntity entity);

    ProductBrand convertToDomain(ProductBrandManageInfo info);

    ProductBrand convertToDomain(ProductBrandManageSearchForm form);

    ProductBrand convertToDomain(ProductBrandManageCreateForm form);

    ProductBrand convertToDomain(ProductBrandManageEditForm form);

    // convertToInfo
    ProductBrandManageInfo convertToInfo(ProductBrand domain);

    ProductBrandManageInfo convertToInfo(ProductBrandEntity entity);

    ProductBrandManageInfo convertToInfo(ProductBrandManageSearchForm form);

    ProductBrandManageInfo convertToInfo(ProductBrandManageCreateForm form);

    ProductBrandManageInfo convertToInfo(ProductBrandManageEditForm form);

}